package com.vic.generics.b;

/**
 * @author victor
 */
public class Testb {

    public static void main(String[] args) {
        Hello hello = new Hello();
        TestHello<Hello> testHello = new TestHello<>(hello);
        testHello.callHello();
    }
}

class Hello {
    public void hello() {
        System.out.println("hello");
    }
}

class TestHello<T extends Hello> {
    private T t;

    public TestHello(T t) {
        this.t = t;
    }

    public void callHello() {
        System.out.println(t); // com.vic.generics.b.Hello@4f4a7090


//        if(t instanceof Hello) {
//            Hello a = (Hello)t;
//            ((Hello) t).hello(); // hello
//        }
        t.hello(); // 这里不能编译，原因是因为类型擦除的存在，这里被编译成了Object，因此不能和 Hello 这个类绑定，也就无法调用 hello 方法。
    }
}
